﻿using System;
using System.Text;
using System.Text.RegularExpressions;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string content = @"<p>王者荣耀3月份终于迎来了第一周的运动，而新英雄镜也是根据进度上线了，昨天晚上上线体验服之后，许多主播都用她就行了体验，从操作技术以及克制英雄方面做了许多的分析，其中公认天敌泛起，不是猴子、典韦而是冷门的他。</p>
            <p><img src=""//inews.gtimg.com/newsapp_bt/0/11407686297/1000"">
            </p>
            <p>镜，这个英雄今天是体验服的第二天了，许多主播玩了之后的看法就是操作很秀，难度一般，而且这个英雄的出装也是属于打野上单的类型，跟曜比力相似。不外由于是第一天上线体验服所以伤害很是高，一套技术2秒时间就能够秒杀射手，孤影也是亲自试过，劈面后羿满血还没反映过来一条血就没了，后期肯定会举行调整。</p>
            <p><img src=""//inews.gtimg.com/newsapp_bt/0/11408842930/1000"">
            </p>
            <p>猴子，猴子这个英雄对镜没有克制作用，主要是镜原来就是两全英雄，猴子很难从中第一时间就找到两全，如果打错的话猴子就是失去了大招。相反在镜的大招困绕圈内猴子是打不外镜的，而且猴子原来就是一个脆皮，照样会被镜一套秒杀。固然如果猴子一心想偷袭的话也是能够秒杀镜的，后期出其不意231一套能够带走。</p>
            <p><img src=""//inews.gtimg.com/newsapp_bt/0/11408843672/1000"">
            </p>
            <p>典韦，典韦这个英雄最怕的就是控制技术，幸亏镜这个英雄没有控制，否则的话典韦就越发难受了，不外典韦和镜也就能够五五开，如果典韦先手的话大招打已往之后如果二技术能够控制到镜才有效果，可是镜这个英雄位移比力多，而且另有两全，典韦还是有点够呛的，如果二技术控制不到的话就会被镜一套秒杀。</p>
            <p><img src=""//inews.gtimg.com/newsapp_bt/0/11408844293/1000"">
            </p>
            <p>老汉子，而这个英雄才是最克制镜的，纵然是现版本老汉子也就是许多花里胡哨英雄的天敌，只要大招捆住，不关你是什么两全都没用，不外以现版本的老汉子打镜另有很有大压力的，需要带上弱化才行，字样镜在弱化规模内伤害就大大降低了，而老汉子在弱化规模内伤害是越来越高的。</p>";

            //content = "英雄才是最克制镜的，纵然是现版本老汉子也就是许多花里胡哨英雄的天敌。";
            content = Run(content);

            Console.WriteLine(content);
            Console.ReadKey();
        }


        /// <summary>  
        /// 字符串转为UniCode码字符串  
        /// </summary>  
        /// <param name="s"></param>  
        /// <returns></returns>  
        public static string StringToUnicode(string s)
        {
            char[] charbuffers = s.ToCharArray();
            byte[] buffer;
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < charbuffers.Length; i++)
            {
                buffer = System.Text.Encoding.Unicode.GetBytes(charbuffers[i].ToString());
                sb.Append(String.Format("\\u{0:X2}{1:X2}", buffer[1], buffer[0]));
            }
            return sb.ToString();
        }


        private static string Convert2Htmlxxx(string converStr)
        {
            if (string.IsNullOrEmpty(converStr))
            {
                throw new ArgumentException(nameof(converStr));
            }
            StringBuilder stringBuilder = new StringBuilder();
            for (int i = 0; i < converStr.Length; i++)
            {
                stringBuilder.Append("&#" + Char.ConvertToUtf32(converStr, i) + ";");
            }
            return stringBuilder.ToString();
        }

        private static string Run(string content)
        {
            if (content.Length < 3)
            {
                return content;
            }
            var random = new Random();
            var regx = Regex.Matches(content, "<(.+)>(.+)</(.+)>");
            if (regx.Count != 0)
            {
                foreach (Match reg in regx)
                {
                    if (reg.Groups.Count > 2)
                    {
                        var strs = reg.Groups[2].Value.Split(new Char[] { '，', '。' });
                        foreach (var str in strs)
                        {
                            if (str.Length < 4)
                            {
                                continue;
                            }
                            var start = random.Next(0, str.Length / 2);
                            var len = random.Next(3, 8);
                            var end = start + len;
                            end = end > str.Length - 1 ? str.Length : end;
                            var strtemp = str.Substring(start, end - start);

                            StringBuilder stringBuilder = new StringBuilder();
                            for (int i = 0; i < strtemp.Length; i++)
                            {
                                stringBuilder.Append("&#" + Char.ConvertToUtf32(strtemp, i) + ";");
                            }
                            var strtemp2 = stringBuilder.ToString();

                            var str2 = str.Replace(strtemp, strtemp2);
                            content = content.Replace(str, str2);
                        }
                    }
                }
            }
            else
            {
                var strs = content.Split(new Char[] { '，', '。' });
                foreach (var str in strs)
                {
                    if (str.Length < 4)
                    {
                        continue;
                    }
                    var start = random.Next(0, str.Length / 2);
                    var len = random.Next(3, 8);
                    var end = start + len;
                    end = end > str.Length - 1 ? str.Length : end;
                    var strtemp = str.Substring(start, end - start);

                    StringBuilder stringBuilder = new StringBuilder();
                    for (int i = 0; i < strtemp.Length; i++)
                    {
                        stringBuilder.Append("&#" + Char.ConvertToUtf32(strtemp, i) + ";");
                    }
                    var strtemp2 = stringBuilder.ToString();

                    var str2 = str.Replace(strtemp, strtemp2);
                    content = content.Replace(str, str2);
                }
            }
            return content;
        }
    }
}
